package com.buercorp.wangyu.core1.ch9;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;

//public class LinkedlistText {
//    package v1ch09.linkedList;
//
//import java.util.Iterator;
//import java.util.LinkedList;
//import java.util.ListIterator;

/**
 * This program demonstrates operations on linked lists.
 * D:\DevelopTools\openjdk\bin\java.exe -classpath D:\DevelopSpace\IdeaSpace\wy-test-demo\target\classes com.buercorp.wangyu.core1.ch9.LinkedListTest
 *
 * @author Cay Horstmann
 * @version 1.12 2018-04-10
 */
public class LinkedListTest {
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println("main arg: " + arg);
        }
        // 创建泛型类 只包含String类型的元素
        var a = new LinkedList<String>();
        // 添加
        a.add("Amy");
        a.add("Carl");
        a.add("Erica");

        var b = new LinkedList<String>();
        b.add("Bob");
        b.add("Doug");
        b.add("Frances");
        b.add("Gloria");

        // merge the words from b into a
        // b 合并到 a
        ListIterator<String> aIter = a.listIterator(); // 创建一个ListIterator对象
        Iterator<String> bIter = b.iterator(); // 迭代器遍历

        while (bIter.hasNext()) // 判断是否有值
        {
            if (aIter.hasNext()) aIter.next(); //a 获取当前的元素并指向下一个 获取a的值
            aIter.add(bIter.next()); // 把b集合添加到a中
        }

        System.out.println("a打印的是： " + a);// [Amy, Bob, Carl, Doug, Erica, Frances, Gloria]

        // remove every second word from b
        // 从 B 中删除每隔一个单词

        bIter = b.iterator();
        while (bIter.hasNext()) // 判断是否有元素
        {
            bIter.next(); // skip one element 获取当前元素 指向下一个
            if (bIter.hasNext()) //
            {
                bIter.next(); // skip next element ??? 获取当前元素 指向下一个
                bIter.remove(); // remove that element 删除当前的元素
            }
        }

        System.out.println("b打印的是： " + b);

        // bulk operation: remove all words in b from a
        // 从 A 中删除 B 中的所有单词
        a.removeAll(b);// 直接用Collection接口 ？？？

        System.out.println("a打印的是： " + a);
    }
}


